/* Archivo Conexion.java */

import java.sql.*;

public class Conexion {
    
    // La descripcion del driver de la BD     
    //private static String driver = "org.postgresql.Driver";
    private static String driver = "org.gjt.mm.mysql.Driver";
    // La direccion URL de la BD
    //private static String url = "jdbc:postgresql://localhost:5432/";
    private static String url = "jdbc:mysql://localhost:3306/";
    // El nombre de la BD
    private static String bd = "laboratorio8";
    // EL login del usuario para conectarse al servidor de BD
    private static String usuario = "root";
    // EL password del usuario para conectarse al servidor de BD
    private static String password = "12345";
    

    private static Connection conexion;
    
    
	/**
     * Metodo utilizado para Obtener una conexion a BD
     * @return Un objeto tipo Connection que representa una conexion a la BD
     */
    private static Connection getConexion() {
    	try{
    		if (conexion == null || conexion.isClosed()) {	        
	        	// Cargo el driver en memoria
	            Class.forName(driver);
	            // Establezco la conexion
	            conexion=DriverManager.getConnection(url+bd,usuario,password);
	            System.out.println("Se conecto a la BD");
	        }
    	}
        catch(SQLException e){
            System.out.println("Error al conectar en la BD "+e);
        } 
        catch (ClassNotFoundException e) {
        	System.out.println("Error al conectar en la BD "+e);
		}
    	//conexion.
        return conexion;
    }

    /** * Metodo consultar
     * @param String TiraSQL
     * @return ResultSet
     */ 
    public static ResultSet consultar(String tiraSQL) {
    	getConexion();
        ResultSet resultado = null;        
        if (conexion == null) {
            System.out.println("No se ha hecho la conexion para Consultar");
        }
        else {        
            try {
                Statement sentencia= conexion.createStatement();
                resultado = sentencia.executeQuery(tiraSQL);
                if (resultado == null) {
                	System.out.println("No se encontro este registro");
                }
            }
            catch(Exception e) {
                System.out.println("Error Consultando: "+e);
            }
            try {  
                conexion.close();            	
            }
            catch( SQLException e ) {
            	System.out.println( "Error cerrando la conexion en Ejecutar: "+e.toString() );
            }
        }
        return resultado;
    }

    /** * Metodo ejecutar
     * @param String TiraSQL
     * @return boolean
     */     
    public static boolean ejecutar(String tiraSQL) {
        getConexion();
        boolean ok = false;
        if (conexion == null) {
            System.out.println("No se ha hecho la conexion para Ejecutar");
        }
        else {
            try {
                Statement sentencia = conexion.createStatement();
                int i = sentencia.executeUpdate(tiraSQL);
                if (i>0) {
                	ok = true;
                	if (tiraSQL.trim().charAt(0) == 'I') {
                		System.out.println("Registro Incluido!!!");
                	}
                	else if(tiraSQL.trim().charAt(0) == 'U') {
                		System.out.println("Registro Actualizado!!!");
                	}
                	else if(tiraSQL.trim().charAt(0) == 'D') {
                		System.out.println("Registro Eliminado!!!");
                	}
                }
                sentencia.close ();
            }
            catch(Exception e) {
                System.out.println("Error Ejecutando: "+e);
            }
        }
    	try {  
          conexion.close();
        }
        catch( SQLException e ) {
          System.out.println( "Error cerrando la conexion en Ejecutar: "+e.toString() );
        }
        return ok;  
    }
}